package school.entity;

/*
 * 学生子类：继承Person，覆写printInfo()实现课表打印
 */
public class Student extends Person {
    // 子类私有属性：仅学生拥有的“已选课程”
    private Course selectedCourse;

    // 子类构造方法：通过super()调用父类构造
    public Student(String id, String name, String gender) {
        super(id, name, gender); // 必须放在第一行，初始化父类的id/name/gender
    }

    // 选课方法：public修饰，允许test包调用
    public void selectCourse(Course course) {
        this.selectedCourse = course;
        System.out.println(getName() + "（学生）成功选择课程：" + course.getCourseName());
    }

    // 退课方法：public修饰，允许test包调用
    public void dropCourse() {
        if (selectedCourse != null) {
            System.out.println(getName() + "（学生）成功退选课程：" + selectedCourse.getCourseName());
            selectedCourse = null;
        } else {
            System.out.println(getName() + "（学生）当前无选课，无法退课");
        }
    }

    // 覆写父类的printInfo()：实现打印学生课表
    // !!跨包非子类调用必须用public修饰!!
    @Override
    public void printInfo() {
        System.out.println("\n=== 学生 " + getName() + " 的课表 ===");
        if (selectedCourse != null) {
            // 拼接课程信息和教师姓名（通过课程的teacherId匹配）
            String teacherName = "T001".equals(selectedCourse.getTeacherId()) ? "张三" : 
                                 "T002".equals(selectedCourse.getTeacherId()) ? "李四" : "未知教师";
            System.out.println(selectedCourse + "，授课教师：" + teacherName);
        } else {
            System.out.println("当前未选择任何课程");
        }
        System.out.println("======================");
    }

    // 子类属性的Getter：供外部获取已选课程（可选）
    public Course getSelectedCourse() {
        return selectedCourse;
    }
}